从陀螺仪数据中去除高频噪声
此示例演示如何使用EngeeDSP库中的MedianFilter块从流式传输中删除高频辐射。
中值滤波器是一种非线性数字滤波技术,通常用于从图像或信号中去除噪声。
该算法的实现从库的连接开始:
In [ ]:
Pkg.add(["DelimitedFiles"])
In [ ]:
import .EngeeDSP
using DelimitedFiles
using Plots
plotlyjs()
Out[0]:
从JL文件下载高频噪声信号是Julia源代码文件。
In [ ]:
matrix = readdlm("$(@__DIR__)/data.jl", '\t', Float64, '\n');
将文件编码成714个样本,以便每列数据包含10帧。
In [ ]:
In1 = map(Iterators.partition(axes(matrix,1), 714)) do cols
matrix[cols,:]
end
Out[0]:
实施过滤,系统采用窗口长度为10.
In [ ]:
var_median_fir = EngeeDSP.MedianFilter(WindowLength = 10)
EngeeDSP.setup!( var_median_fir, In1[1] )
Out1 = In1
for i = 1:10 # Обработка сигнала в цикле.
global gyroData = In1[i]
global filteredData = EngeeDSP.step!(var_median_fir,gyroData)
Out1[i] = filteredData
end
Out1 = vcat(Out1...)
Out[0]:
创建一个对象的图形来查看过滤后的输出,并将其与带有噪声的输入信号进行比较。
In [ ]:
plot( [matrix[:,3],Out1[:,3]], ylims = [-300, 300], label=["Входной сигнал" "Отфильтрованный выход"], legendfontsize=6)
Out[0]:
结论
在此示例中,演示了在Engee开发环境中使用扩展环境功能的其他库的可能性,即EngeeDSP库和在其中实现的MedianFilter。